##### My (demuredemeanor) i3 config
# Uses tabstop=4; shiftwidth=4 tabs; foldmarker={{{,}}};
# https://notabug.org/demure/dotfiles/
# legacy repo http://github.com/demure/dotfiles
# vim: set filetype=i3config:

## Set prefix to Super
set $mod Mod4

# Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below.
font pango:monospace 8

# This font is widely installed, provides lots of unicode glyphs, right-to-left
# text rendering and scalability on retina/hidpi displays (thanks to pango).
#font pango:DejaVu Sans Mono 8

## If you try to go to the same workspace you are on, jump to last workspace
workspace_auto_back_and_forth yes

### Variables ### {{{
    set $Locker i3lock -e -c 2E3436 && sleep 1

    ### Workspace Names ### {{{
    set $ws1 1:
    set $ws2 2:
    set $ws3 3:
    #set $ws4 4:
    set $ws4 4
    set $ws5 5
    set $ws6 6
    set $ws7 7:
    set $ws8 8
    set $ws9 9
    set $ws10 10
    ### End Workspace Names ### }}}
### End Variables ### }}}

### Bindings ### {{{
    ### i3 Keys ### {{{
    ## reload the configuration file
    bindsym $mod+Shift+c reload
    ## restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
    ## The pkill is to makke my fancy bar play nice
    bindsym $mod+Shift+r exec pkill lemonbar && i3-msg restart
    ## exit i3 (logs you out of your X session)
    bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'pkill lemonbar && i3-msg exit'"
    ### End i3 Keys ### }}}

    ### Workspace Bindings ### {{{
        ### Last Workspace ### {{{
        ## Move to last workspace
        bindsym $mod+Tab workspace back_and_forth
        ## Send container to last workspace
        bindsym $mod+Shift+Tab move container to workspace back_and_forth
        ### End Last Workspace ### }}}

        ### Switch Workspace ### {{{
        ## switch to workspace
        bindsym $mod+1 workspace $ws1
        bindsym $mod+2 workspace $ws2
        bindsym $mod+3 workspace $ws3
        bindsym $mod+4 workspace $ws4
        bindsym $mod+5 workspace $ws5
        bindsym $mod+6 workspace $ws6
        bindsym $mod+7 workspace $ws7
        bindsym $mod+8 workspace $ws8
        bindsym $mod+9 workspace $ws9
        bindsym $mod+0 workspace $ws10
        ### End Switch Workspace ### }}}

        ### Send Workspace ### {{{
        ## move focused container to workspace
        bindsym $mod+Shift+1 move container to workspace $ws1
        bindsym $mod+Shift+2 move container to workspace $ws2
        bindsym $mod+Shift+3 move container to workspace $ws3
        bindsym $mod+Shift+4 move container to workspace $ws4
        bindsym $mod+Shift+5 move container to workspace $ws5
        bindsym $mod+Shift+6 move container to workspace $ws6
        bindsym $mod+Shift+7 move container to workspace $ws7
        bindsym $mod+Shift+8 move container to workspace $ws8
        bindsym $mod+Shift+9 move container to workspace $ws9
        bindsym $mod+Shift+0 move container to workspace $ws10
        ### End Send Workspace ### }}}

        ### Move Workspace Different Monitor ### {{{
        ## Move the current workspace to the next output
        bindsym $mod+Mod1+Left move workspace to output Left
        bindsym $mod+Mod1+Down move workspace to output Down
        bindsym $mod+Mod1+Up move workspace to output Up
        bindsym $mod+Mod1+Right move workspace to output right
        ### End Move Workspace Different Monitor ### }}}

        ### Cycle Through Workspaces ### {{{
        ## Added for touchegg
        bindsym $mod+u workspace prev
        bindsym $mod+o workspace next
        ### End Cycle Through Workspaces ### }}}
    ### End Workspace Bindings ### }}}

    ### Window Bindings ### {{{
        ## kill focused window
        bindsym $mod+Shift+q kill

        ### Sticky Windows, good for picture in picture
        bindsym $mod+Shift+s sticky toggle

        ### Split Orientation ### {{{
        ## split in horizontal orientation
        bindsym $mod+h split h

        ## split in vertical orientation
        bindsym $mod+v split v
        ### End Split Orientation ### }}}
    ### End Window Bindings ### }}}

    ### Focus Bindings ### {{{
        ## enter fullscreen mode for the focused container
        bindsym $mod+f fullscreen toggle

        ### Tile / Float ### {{{
        ## toggle tiling / floating
        bindsym $mod+Shift+space floating toggle

        ## change focus between tiling / floating windows
        bindsym $mod+space focus mode_toggle
        ### End Tile / Float ### }}}

        ### Change Focus ### {{{
        ## change focus
        bindsym $mod+j focus left
        bindsym $mod+k focus down
        bindsym $mod+l focus up
        bindsym $mod+semicolon focus right

        ## alternatively, you can use the cursor keys:
        bindsym $mod+Left focus left
        bindsym $mod+Down focus down
        bindsym $mod+Up focus up
        bindsym $mod+Right focus right
        ### End Change Focus ### }}}

        ### Move Focused Window ### {{{
        ## move focused window
        bindsym $mod+Shift+j move left
        bindsym $mod+Shift+k move down
        bindsym $mod+Shift+l move up
        bindsym $mod+Shift+semicolon move right

        ## alternatively, you can use the cursor keys:
        bindsym $mod+Shift+Left move left
        bindsym $mod+Shift+Down move down
        bindsym $mod+Shift+Up move up
        bindsym $mod+Shift+Right move right
        ### End Move Focused Window ### }}}

        ### Focus Urgent Workspace {{{
        bindsym $mod+x [urgent=latest] focus
        ### End Focus Urgent Workspace ###}}}
    ### End Focus Bindings ### }}}

    ### Container Bindings ### {{{
        ### Change Container Layout ### {{{
        ## change container layout (stacked, tabbed, toggle split)
        bindsym $mod+s layout stacking
        bindsym $mod+w layout tabbed
        bindsym $mod+e layout toggle split
        ### End Change Container Layout ### }}}

        ### Parent / Child Container ### {{{
        ## focus the parent container
        bindsym $mod+a focus parent

        ## focus the child container
        bindsym $mod+d focus child
        ### End Parent / Child Container ### }}}
    ### End Container Bindings ### }}}

    ### Mouse Bindings ### {{{
        ## Use Mouse+$mod to drag floating windows to their wanted position
        floating_modifier $mod

        ## Seems like this only works on border or title bar...
        #bindsym --whole-window --border button6 workspace prev
        #bindsym --whole-window --border button7 workspace next
        ## Removed --whole-window as it started working, and touchpoint scrolling affected.
        bindsym --border button6 workspace prev
        bindsym --border button7 workspace next
    ### End Mouse Bindings ### }}}

    ### Scratch Pad ### {{{
    ## Make the currently focused window a scratchpad
    bindsym $mod+Shift+minus move scratchpad

    ## Show the first scratchpad window
    bindsym $mod+minus scratchpad show
    ### End Scratch Pad ### }}}

    ### User Interface Bindings ### {{{
        ### Brightness Bindings ### {{{
        bindsym XF86MonBrightnessUp exec xbacklight -inc 5          ## Increase screen brightness
        bindsym Shift+XF86MonBrightnessUp exec xbacklight -inc 1    ## Fine increase screen brightness
        bindsym XF86MonBrightnessDown exec xbacklight -dec 5        ## Decrease screen brightness
        bindsym Shift+XF86MonBrightnessDown exec xbacklight -dec 1  ## Fine decrease screen brightness
        bindsym $mod+XF86MonBrightnessUp exec xbacklight -set 100   ## Set max screen brightness
        bindsym $mod+XF86MonBrightnessDown exec xbacklight -set 1   ## Set min screen brightness
        ### End Brightness Bindings ### }}}

        ### Pulse Audio Controls ### {{{
        ## Disabled old volume bindings after amixer started acting up
        ##bindsym XF86AudioRaiseVolume exec --no-startup-id amixer -q set Master 5%+          ## Increase sound volume
        ##bindsym Shift+XF86AudioRaiseVolume exec --no-startup-id amixer -q set Master 1%+    ## Fine increase sound volume
        ##bindsym $mod+XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 0 +5%  ## Able to softvol increase
        ##bindsym XF86AudioLowerVolume exec --no-startup-id amixer -q set Master 5%-          ## Decrease sound volume
        ##bindsym Shift+XF86AudioLowerVolume exec --no-startup-id amixer -q set Master 1%-    ## Fine decrease sound volume
        ##bindsym $mod+XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 0 -5%  ## Able to softvol decrease
        ##bindsym XF86AudioMute exec --no-startup-id amixer -q set Master toggle              ## mute sound

        ## Softvol increase possible with pactl
        bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 0 +5%           ## Increase sound volume
        bindsym Shift+XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 0 +1%     ## Fine increase sound volume
        bindsym $mod+XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 0 100%     ## Set volume to "100%"
        bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 0 -5%           ## Decrease sound volume
        bindsym Shift+XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 0 -1%     ## Fine decrease sound volume
        bindsym $mod+XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 0 50%      ## Set volume to "50%"

        bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 0 toggle                 ## mute sound
        bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute 1 toggle            ## mute mic
        ### End Pulse Audio ### }}}

        ### Toggle redshift ### {{{
        bindsym $mod+slash exec --no-startup-id pkill -USR1 redshift
        ### End Toggle redshift ### }}}
    ### End User Interface Bindings ### }}}

    ### Program Call Bindings ### {{{
        ### Launch Term ### {{{
        ## start a terminal
        bindsym $mod+Return exec i3-sensible-terminal
        ### End Launch Term ### }}}

        ### Screen Shots ### {{{
        bindsym $mod+Home exec --no-startup-id exec scrot -m        ## Backup binding
        bindsym Print exec --no-startup-id exec scrot -m
        bindsym XF86Explorer exec --no-startup-id exec scrot -m     ## x260
        bindsym XF86Favorites exec --no-startup-id exec scrot -m    ## x270
        ## Note: you need to click on the window, after key combo, to capture it.
        ## Note: Needs to have startup ip, as interacts with GUI
        bindsym $mod+Shift+Home exec --no-startup-id scrot -s       ## Backup binding
        bindsym Shift+Print exec --no-startup-id scrot -s
        bindsym Shift+XF86Explorer exec --no-startup-id scrot -s    ## x260
        bindsym Shift+XF86Favorites exec --no-startup-id scrot -s   ## x270
        ### End Screen Shots ### }}}

        ### Rofi Bindings ### {{{
        ## Use rofi, it's better
        ## start dmenu (a program launcher)
        #bindsym $mod+d exec dmenu_run
        bindsym $mod+p exec rofi -sidebar-mode -show run -font 'Pragmata Pro 10' -fg \#505050 -bg \#000000 -bgalt \#101010 -hlfg \#008080 -hlbg \#454A4F -bc \#008080 -bw 1 -location 2 -width 100 -padding 0 -lines 10 -no-disable-history -no-levenshtein-sort        ## Backup bindingt
        bindsym XF86Search exec rofi -sidebar-mode -show run -font 'Pragmata Pro 10' -fg \#505050 -bg \#000000 -bgalt \#101010 -hlfg \#008080 -hlbg \#454A4F -bc \#008080 -bw 1 -location 2 -width 100 -padding 0 -lines 10 -no-disable-history -no-levenshtein-sort    ## x260

        ### rofi-pass binding
        bindsym $mod+Shift+p exec rofi-pass
        bindsym Shift+XF86Search exec rofi-pass     ## x260
        ### End Rofi Bindings ### }}}

        ### External IP Toggle For i3 lemonbar ### {{{
        ## Good example of a on/off flag, with awk. Replaces with three position code.
        ## awk -v TEMP=/tmp/i3_lemonbar_ip_${USER} 'BEGIN {{FILE=getline < TEMP < 0 ? "0" : "1"} {if($0==1){STATE=1} else {STATE=0}} {if(STATE==0){system("echo 1 > "TEMP)} else {system("echo 0 > "TEMP)}} }'
        bindsym XF86LaunchA exec awk -v TEMP=/tmp/i3_lemonbar_ip_${USER} 'BEGIN {{FILE=getline < TEMP < 0 ? "0" : "1"} {if($0==1){STATE=1} else if($0==2){STATE=2} else{STATE=0}} {if(STATE==0){system("echo 1 > "TEMP)} else if(STATE==1){system("echo 2 > "TEMP)} else {system("echo 0 > "TEMP)}} }'      ## x260
        bindsym XF86Display exec awk -v TEMP=/tmp/i3_lemonbar_ip_${USER} 'BEGIN {{FILE=getline < TEMP < 0 ? "0" : "1"} {if($0==1){STATE=1} else if($0==2){STATE=2} else{STATE=0}} {if(STATE==0){system("echo 1 > "TEMP)} else if(STATE==1){system("echo 2 > "TEMP)} else {system("echo 0 > "TEMP)}} }'      ## x270
        ### End External IP FOr i3 lemonbar ### }}}

        ### Clipster Clipboard Manager ### {{{
        bindsym $mod+c exec clipster -sc
        ### End Clipster ### }}}
    ### End Program Call Bindings ### }}}

    ### Misc Bindings ### {{{
    ### End Misc Bindings ### }}}
### End Bindings ### }}}

### i3 Modes ### {{{
    ### System Control  Mode ### {{{
    mode "system-control" {
        bindsym l exec --no-startup-id $Locker, mode "default"
        bindsym e exec --no-startup-id pkill lemonbar && i3-msg exit, mode "default"
        bindsym s exec --no-startup-id $Locker && systemctl suspend, mode "default"
        bindsym h exec --no-startup-id $Locker && systemctl hibernate, mode "default"
        bindsym r exec --no-startup-id systemctl reboot, mode "default"
        bindsym Shift+s exec --no-startup-id systemctl poweroff -i, mode "default"
        bindsym c exec --no-startup-id sudo /usr/bin/tomb close all, mode "default"
        bindsym Shift+c exec --no-startup-id sudo /usr/bin/tomb slam, mode "default"
        ## Invert screen colors
        bindsym i exec --no-startup-id xcalib -invert -alter, mode "default"
        ## Set brightness to my default of 30%
        bindsym b exec --no-startup-id xbacklight -set 30, mode "default"
        ## One minute timer, big
        bindsym t exec urxvt -fn xft:PragmataProMono-Regular:pixelsize=70 -e termdown -WBb -c 10 -t TIME 1m, mode "default"
        ## One minute timer, small
        bindsym Shift+t exec urxvt -e termdown -WBb -c 10 -t TIME 1m, mode "default"
        ## Flip screen horizontally
        bindsym f exec --no-startup-id xrandr -x, mode "default"
        ## Flip screen vertically
        bindsym Shift+F exec --no-startup-id xrandr -y, mode "default"

        ## back to normal: Enter or Escape
        bindsym Return mode "default"
        bindsym Escape mode "default"
    }

    bindsym $mod+Pause mode "system-control"
    bindsym $mod+End mode "system-control"
    bindsym XF86Tools mode "system-control"
    ### End System Control Mode ### }}}

    ### App Quick Launch ### {{{
    ## Launch mode, one app per key.
    mode "quick-launch" {
        bindsym b exec qutebrowser ; mode "default"
        bindsym c exec speedcrunch ; mode "default"
        bindsym f exec firefox ; mode "default"
        ## gksudo is dead
        #bindsym g exec gksudo gameconqueror ; mode "default"
        bindsym g exec urxvt -e sudo scanmem ; mode "default"
        bindsym Shift+m exec --no-startup-id sudo /usr/bin/tomb open -k ~/vault.tomb.key ~/vault.tomb -g ; mode "default"
        bindsym n exec urxvt -e terminal_velocity ; mode "default"
        bindsym o exec libreoffice ; mode "default"
        bindsym t exec i3-sensible-terminal ; mode "default"
        bindsym v exec $HOME/bin/start-vpn.sh ; mode "default"
        bindsym w exec urxvt -e wicd-curses ; mode "default"

        ## Keeping this as an example
        ## gnome-disks will not launch twice, gparted will. Avoid that.
        #bindsym d exec ((pidof gpartedbin) || gksudo gparted); exec gnome-disks ; mode "default"

        bindsym Return mode "default"
        bindsym Escape mode "default"
    }

    #bindsym $mod+Shift+g mode "quick-launch"
    bindsym $mod+g mode "quick-launch"
    ### End App Quick Launch ### }}}

    ### App Focus Mode ### {{{
    mode "app-focus" {
        ## hardcoded focus keybindings
        bindsym b [class="(?i)qutebrowser"] focus, mode "default"
        bindsym w [class="(?i)terminal" title="weechat"] focus, mode "default"
        #bindsym m [class="(?i)icedove"] focus, mode "default"
        bindsym f [class="(?i)spacefm"] focus, mode "default"
        bindsym z [class="(?i)zathura"] focus, mode "default"

        ## back to normal: Enter or Escape
        bindsym Return mode "default"
        bindsym Escape mode "default"
    }

    bindsym $mod+Shift+g mode "app-focus"
    ### End App Focus Mode ### }}}

    ### Resize Window Mode ### {{{
    ## resize window (you can also use the mouse for that)
    mode "resize" {
        ## These bindings trigger as soon as you enter the resize mode

        ## They resize the border in the direction you pressed, e.g.
        ## when pressing left, the window is resized so that it has
        ## more space on its left
        bindsym h resize shrink left 10 px or 10 ppt
        bindsym j resize shrink down 10 px or 10 ppt
        bindsym k resize shrink up 10 px or 10 ppt
        bindsym l resize shrink right 10 px or 10 ppt
        bindsym Shift+H resize grow left 10 px or 10 ppt
        bindsym Shift+J resize grow down 10 px or 10 ppt
        bindsym Shift+K resize grow up 10 px or 10 ppt
        bindsym Shift+L resize grow right 10 px or 10 ppt

        ## Same bindings, but for the arrow keys
        bindsym Left resize shrink left 10 px or 10 ppt
        bindsym Down resize shrink down 10 px or 10 ppt
        bindsym Up resize shrink up 10 px or 10 ppt
        bindsym Right resize shrink right 10 px or 10 ppt
        bindsym Shift+Left resize grow left 10 px or 10 ppt
        bindsym Shift+Down resize grow down 10 px or 10 ppt
        bindsym Shift+Up resize grow up 10 px or 10 ppt
        bindsym Shift+Right resize grow right 10 px or 10 ppt

        ## Go to precise mode
        bindsym p mode "resize_precise"

        ## Back to normal: Enter or Escape
        bindsym Return mode "default"
        bindsym Escape mode "default"
    }

        ### Precise Resize ### {{{
        mode "resize_precise" {
            bindsym h resize shrink left 1 px or 1 ppt
            bindsym j resize shrink down 1 px or 1 ppt
            bindsym k resize shrink up 1 px or 1 ppt
            bindsym l resize shrink right 1 px or 1 ppt
            bindsym Shift+H resize grow left 1 px or 1 ppt
            bindsym Shift+J resize grow down 1 px or 1 ppt
            bindsym Shift+K resize grow up 1 px or 1 ppt
            bindsym Shift+L resize grow right 1 px or 1 ppt

            ## Same bindings, but for the arrow keys
            bindsym Left resize shrink left 1 px or 1 ppt
            bindsym Down resize shrink down 1 px or 1 ppt
            bindsym Up resize shrink up 1 px or 1 ppt
            bindsym Right resize shrink right 1 px or 1 ppt
            bindsym Shift+Left resize grow left 1 px or 1 ppt
            bindsym Shift+Down resize grow down 1 px or 1 ppt
            bindsym Shift+Up resize grow up 1 px or 1 ppt
            bindsym Shift+Right resize grow right 1 px or 1 ppt

            ## Return to normal resize
            bindsym p mode "resize"

            ## Back to normal: Enter or Escape
            bindsym Return mode "default"
            bindsym Escape mode "default"
        }
        ### End Precise Resize ### }}}

    bindsym $mod+r mode "resize"
    ### End Resize Mode ### }}}

    ### Control Pianobar Mode ### {{{
    mode "control-pianobar" {
        bindsym p exec --no-startup-id ~/.config/pianobar/control-pianobar.sh play, mode "default"
        bindsym q exec --no-startup-id ~/.config/pianobar/control-pianobar.sh quit, mode "default"
        bindsym h exec --no-startup-id ~/.config/pianobar/control-pianobar.sh history, mode "default"
        bindsym n exec --no-startup-id ~/.config/pianobar/control-pianobar.sh next, mode "default"
        bindsym t exec --no-startup-id ~/.config/pianobar/control-pianobar.sh tired, mode "default"
        bindsym s exec --no-startup-id ~/.config/pianobar/control-pianobar.sh switchstation, mode "default"
        bindsym \, exec --no-startup-id ~/.config/pianobar/control-pianobar.sh previousstation, mode "default"
        bindsym . exec --no-startup-id ~/.config/pianobar/control-pianobar.sh nextstation, mode "default"
        bindsym l exec --no-startup-id ~/.config/pianobar/control-pianobar.sh love, mode "default"
        bindsym b exec --no-startup-id ~/.config/pianobar/control-pianobar.sh ban, mode "default"
        bindsym e exec --no-startup-id ~/.config/pianobar/control-pianobar.sh explain, mode "default"
        bindsym c exec --no-startup-id ~/.config/pianobar/control-pianobar.sh current, mode "default"

        ## back to normal: Enter or Escape
        bindsym Return mode "default"
        bindsym Escape mode "default"
    }

    bindsym $mod+m mode "control-pianobar"
    ### End Control Pianobar Mode ### }}}

    ## xrandr mode?
### End i3 Modes ### }}}

### Window Treatments ### {{{
    ## (adding "(?i)" means ignore case)
    ### Program Floating ### {{{
    for_window [class="mpv|feh|Pinentry|Gnome-calculator"] floating enable
    for_window [title="Steam - Update*|Steam - Self Updater|Event Tester|termdown"] floating enable
    ## Make wicd-curses and terminal_velocity pop up bigger, and centered
    ## Added second criteria to reduce false positives
    for_window [class="URxvt"] [title="wicd-curses|terminal_velocity"] floating enable, resize shrink width 10000px, resize grow width 800px, resize shrink height 10000px, resize grow height 600px, move position 525 225
    for_window [class="QtPass"] floating enable, resize shrink width 10000px, resize grow width 800px, resize shrink height 10000px, resize grow height 600px, move position 525 225
    ### End Program Floating ### }}}

    ## Disable border
    for_window [class="mpv|URxvt|(?i)chromium|terminator|qutebrowser|manaplus|(?i)firefox"] border 1pixel

    ## Tab view
    for_window [class="Virt-manager"] focus child, layout tabbed, focus

    ### Deal with pop ups ### {{{
    for_window [window_role="pop-up"] floating enable
    for_window [window_role="task_dialog"] floating enable
    for_window [title="Preferences$"] floating enable
    ### End Popups ### }}}

    ### Scratchpad ### {{{
    #for_window [title="nvPY"] move scratchpad
    ### End Scratchpad ### }}}
### End Window Treatments ### }}}

### Assign Application Workspace ### {{{
assign [class="(?i)spacefm"]    $ws7

### End Assign Application Workspace ### }}}

### Bar Settings ### {{{
# Start i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)
#bar {
        #status_command i3status
        #tray_output primary
#}

bar {
    i3bar_command ~/.i3/lemonbar/i3_lemonbar.sh
    binding_mode_indicator yes
    ## This isn't working? primary display set to lvms1.
    #tray_output primary
}
### End Bar Settings ### }}}

### Exec Programs ### {{{
exec --no-startup-id [ "$(xrandr | grep -o eDP1)" = "eDP1" ] && xrandr --output eDP1 --primary
exec --no-startup-id [ -e $HOME/.Xmodmap ] && xmodmap $HOME/.Xmodmap
## Set pulseaudio bell sound, and set volume
exec --no-startup-id pactl upload-sample /usr/share/sounds/freedesktop/stereo/bell.oga bell && pactl load-module module-x11-bell sample=bell && xset b 75
exec --no-startup-id compton -b
#exec srandrd autorandr -c      ## One day, I may use this if I have a dock set up at home/work.
exec srandrd ~/projects/personal/scripts/hdmi.sh    ## For now, this auto connects to any monitor, and adds it to the right.
exec --no-startup-id nitrogen --restore
exec --no-startup-id conky -qc $HOME/.i3/conky/back_log.conkyrc
exec --no-startup-id conky -qc $HOME/.i3/conky/back_backups.conkyrc
exec --no-startup-id conky -qc $HOME/.i3/conky/back_cal.conkyrc
exec --no-startup-id conky -qc $HOME/.i3/conky/back_task.conkyrc
exec --no-startup-id xss-lock -- i3lock -e -c 2E3436
exec --no-startup-id redshift
exec --no-startup-id dropbox start
exec --no-startup-id touchegg
exec --no-startup-id unclutter
#exec --no-startup-id clipster -d
## Having wonkyness with default python being python2.7
exec --no-startup-id python3 /usr/local/sbin/clipster -d
exec --no-startup-id mpd
exec --no-startup-id i3-msg "workspace $ws7; exec /usr/bin/spacefm"
exec --no-startup-id i3-msg "workspace $ws3; exec $HOME/bin/qutebrowser"
exec --no-startup-id i3-msg "workspace $ws1; exec /usr/bin/urxvt"
exec --no-startup-id sleep 30 && pkill -USR1 redshift
### End Exec Programs ### }}}
